'''
* This is the projet for Brtc LlmOps Platform
* @Author Leon-liao <liaosiliang@alltman.com>
* @Description //TODO 
* @File: 2_study_reunnable_bind.py
* @Time: 2025/7/27
* @All Rights Reserve By Brtc
'''
import dotenv
from langchain.chains.summarize.refine_prompts import prompt_template
from langchain_community.chat_models import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate

"""4、Runnable组件动态添加默认调用参数   a.1、动态添加默认调用参数"""
#1、加载环境变量
dotenv.load_dotenv()
#2、提示词构建
prompt = ChatPromptTemplate.from_messages([
    ("system", "你在执行一项测试，请重复用户传递的消息内容， 除了重复其他的均不要操作！"),
    ("human","{query}")
])
#3、创建大语言模型
llm = ChatOpenAI(model= "gpt-4o")
#构建chain
""" 
当大模型碰到了world 就把 world 当 做停止词， 停止输出(注意 如果 该单词不是一个 token 则 无效)
比如说 在有的模型上 world 不是一个 token 遇到 world  也不会停止
"""
#chain = prompt|llm.bind(stop="world")|StrOutputParser()
chain = prompt|llm.bind(stop="world")|StrOutputParser()

print(chain.invoke({"query":"hello world"}))
